草庐IT

C++ 指向类实例的指针

全部标签

c# - 如何强制使用扩展方法而不是带有参数的实例方法?

我无法让C#编译器调用我创建的扩展方法,因为它更喜欢使用带有params参数的实例方法。例如,假设我有以下类及其方法:publicclassC{publicvoidTrace(stringformat,paramsobject[]args){Console.WriteLine("Calledinstancemethod.");}}和和扩展:publicstaticclassCExtensions{publicvoidTrace(thisC@this,stringcategory,stringmessage,paramsTuple[]indicators){Console.WriteLi

c# - 如何从 lambda 表达式中获取引用实例的实例

我有这个lambda表达式Expression>commandToExecute然后我用一个方法传递一个类的实例:_commandExecuter.ProcessCommand(()=>aClass.Method())如何获取aClass的实例在ProcessCommand内方法?我想执行这个类的一些附加方法或获取一些属性值。这可能吗?编辑:我现在已经编写了一个简单的静态辅助方法来获取实例:privatestaticobjectGetReferredProviderInstance(Expressionbody){varmethodCallExpression=bodyasMethod

c# - 委托(delegate)指向什么?

我读到引用类型包含对可能存储在托管堆上的实际对象的引用。当一个方法被“分配”给一个委托(delegate)引用变量时,引用指向什么内存?这个内存块和实际的功能代码有什么关系? 最佳答案 让我们拆开一个简单的例子:usingSystem;classProgram{delegateboolMyFilter(intx);boolIsOdd(intx){returnx%2==1;}staticvoidMain(){MyFilterf=newProgram().IsOdd;Console.WriteLine(f(5));}}编译器做什么?让我

c# - CaSTLe Windsor - 如何在构造函数注入(inject)中映射命名实例

也许这很容易,但是在网上搜索已经让我头疼了问题是:interfaceIValidator{voidValidate(objectobj);}publicclassValidatorA:IValidator{publicvoidValidate(objectobj){}}publicclassValidatorB:IValidator{publicvoidValidate(objectobj){}}interfaceIClassA{}interfaceIClassB{}publicclassMyBaseClass{protectedIValidatorvalidator;publicvo

c# - 无法将 List<int[*]> 转换为用反射实例化的 List<int[]>

我正在实例化一个List单维Int32通过反射数组。当我使用以下方法实例化列表时:TypetypeInt=typeof(System.Int32);TypetypeIntArray=typeInt.MakeArrayType(1);TypetypeListGeneric=typeof(System.Collections.Generic.List);TypetypeList=typeListGeneric.MakeGenericType(newType[]{typeIntArray,});objectinstance=typeList.GetConstructor(Type.Empty

c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例

当我在运行时拥有枚举的System.Type并检查了BaseType是否为System.Enum时,我在计算如何准确创建枚举实例时遇到了问题,我的值是一个与项目匹配的int值在神秘的枚举中。到目前为止,我的代码只是上面描述的逻辑,如下所示。if(Type.GetType(type)!=null){if(Type.GetType(type).BaseType.ToString()=="System.Enum"){return???;}}在过去使用枚举时,我总是在代码时知道我正在尝试解析哪个枚举,但在这种情况下我很困惑,并且运气不好以谷歌友好的方式阐明我的问题......我通常会这样做像(

c# - 无法从 VBA (VB6 ok) 实例化用 C# 编写的 COM 对象

使用VS2008,这是我的COM对象usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Windows.Forms;namespaceTestCom{[Guid("9E5E5FB2-219D-4ee7-AB27-E4DBED8E123E")][ClassInterface(ClassInterfaceType.AutoDual)][ProgId("Test9.COMINT")]publicclassTestComClass

C#: "using"实例化表单时?

我正在查看其他人编写的一些C#代码。每当实例化并显示表单时,都会完成以下操作。这个对吗?为什么要在这种情况下使用“使用”?MyFormf;using(f=newMyForm()){f.ShowDialog();}附加问题:可以用下面的代码代替吗?using(MyFormf=newMyForm()){f.ShowDialog();} 最佳答案 WinForms中的一个Form实现了IDisposable模式(它继承了Component的IDisposable,原作者是正确确保值将通过using语句处理。

c# - 识别 MethodInfo 实例是否是属性访问器

我正在使用CastleDynamicProxy编写装饰代理.我需要代理的拦截器只拦截属性写入(而不是读取),因此我正在检查方法的名称:publicvoidIntercept(IInvocationinvocation){if(invocation.Method.Name.StartsWith("set_"){//...}invocation.Proceed();}现在这工作正常,但我不喜欢我的代理对属性的实现方式有深入了解的事实:我想用类似于以下内容的方法替换方法名称检查:if(invocation.Method.IsPropertySetAccessor)不幸的是,我的Google-

重载函数中的 C# 函数指针

我有2个这样重载的C#函数:privatevoid_Insert(Hashtablehash,stringtablename,Funccommand)privatevoid_Insert(Hashtablehash,stringtablename,Funccommand)基本上一个使用OleCommand,另一个使用SqlCommand作为函数的返回值。但丑陋的是,我必须将函数指针转换为正确的类型,即使我觉得编译器应该能够毫无问题地解析它:classRemoteDatabase{publicSqlCommandGetCommand(stringquery,object[]values)